package com.ruralflow.rental.service.impl;

import java.util.List;
import com.ruralflow.common.utils.DateUtils;
import com.ruralflow.common.utils.SecurityUtils;
import com.ruralflow.common.utils.SequenceUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruralflow.rental.mapper.RentalMapper;
import com.ruralflow.rental.domain.Rental;
import com.ruralflow.rental.service.IRentalService;

/**
 * 出租屋信息Service业务层处理
 * 
 * @author ruralflow
 * @date 2025-02-28
 */
@Service
public class RentalServiceImpl implements IRentalService 
{
    @Autowired
    private RentalMapper rentalMapper;

    @Autowired
    private SequenceUtils sequenceUtils;

    /**
     * 查询出租屋信息
     * 
     * @param rentalId 出租屋信息主键
     * @return 出租屋信息
     */
    @Override
    public Rental selectRentalByRentalId(Long rentalId)
    {
        return rentalMapper.selectRentalByRentalId(rentalId);
    }

    /**
     * 查询出租屋信息列表
     * 
     * @param rental 出租屋信息
     * @return 出租屋信息
     */
    @Override
    public List<Rental> selectRentalList(Rental rental)
    {
        return rentalMapper.selectRentalList(rental);
    }

    /**
     * 新增出租屋信息
     * 
     * @param rental 出租屋信息
     * @return 结果
     */
    @Override
    public int insertRental(Rental rental)
    {
        rental.setCreateTime(DateUtils.getNowDate());
        rental.setCreateBy(SecurityUtils.getUsername());
        rental.setRentalCode(getNo());
        return rentalMapper.insertRental(rental);
    }

    /**
     * 修改出租屋信息
     * 
     * @param rental 出租屋信息
     * @return 结果
     */
    @Override
    public int updateRental(Rental rental)
    {
        rental.setUpdateTime(DateUtils.getNowDate());
        rental.setUpdateBy(SecurityUtils.getUsername());
        return rentalMapper.updateRental(rental);
    }

    /**
     * 批量删除出租屋信息
     * 
     * @param rentalIds 需要删除的出租屋信息主键
     * @return 结果
     */
    @Override
    public int deleteRentalByRentalIds(Long[] rentalIds)
    {
        return rentalMapper.deleteRentalByRentalIds(rentalIds, SecurityUtils.getUsername());
    }

    /**
     * 删除出租屋信息信息
     * 
     * @param rentalId 出租屋信息主键
     * @return 结果
     */
    @Override
    public int deleteRentalByRentalId(Long rentalId)
    {
        return rentalMapper.deleteRentalByRentalId(rentalId, SecurityUtils.getUsername());
    }

    /**
     * 生成出租屋信息编码
     *
     * @return 出租屋信息编码
     */
    private String getNo() {
        // 获取用户id补0到五位
        Long userId = SecurityUtils.getUserId();
        String userIdStr = String.format("%05d", userId); // 补零到5位
        return sequenceUtils.createSequenceNumber("RTL" + userIdStr);
    }
}
